home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / protocol / standard / ccitt / 1992 / x / x511_1.asc < prev    next >
Text File  |  1993-07-14  |  76KB  |  1,578 lines

  1.  
  2. Recommendation X.511
  3.  
  4.  
  5.  
  6.                   THE DIRECTORY - ABSTRACT SERVICE DEFINITION   1)
  7.  
  8.                                   (Melbourne, 1988)
  9.                                           
  10.                                           
  11.                                           
  12.                                           
  13.                                       CONTENTS
  14.                                           
  15.  
  16.  
  17. 0     Introduction
  18.  
  19. 1     Scope and field of application
  20.  
  21.  
  22.  
  23. SECTION 1 - General
  24.  
  25.  
  26. 2     References
  27.  
  28. 3     Definitions
  29.  
  30. 4     Abbreviations
  31.  
  32. 5     Conventions
  33.  
  34.  
  35.  
  36. SECTION 2 - Abstract service
  37.  
  38.  
  39. 6     Overview of the directory service
  40.  
  41. 7     Information types
  42.  
  43. 8     Bind and unbind operations
  44.  
  45. 9     Directory read operations
  46.  
  47. 10    Directory search operations
  48.  
  49. 11    Directory modify operations
  50.  
  51. 12    Errors
  52.  
  53.  
  54. Annex A - Abstract service in ASN.1
  55.  
  56.  
  57. Annex B - Directory object identifiers
  58.  
  59. 0     Introduction
  60.  
  61.  
  62. 0.1   This document, together with the others of the series, has been produced to facilitate the interconnection of 
  63. information processing systems to provide directory services. The set of all such systems, together with the directory 
  64. information which they hold, can be viewed as an integrated whole, called the Directory. The information held by the 
  65.  
  66.  
  67.  
  68. 1          Fascicle VIII.8 - Rec. X.511
  69.  
  70.  
  71.  
  72.  
  73. Directory, collectively known as the Directory Information Base (DIB), is typically used to facilitate communication between, 
  74. with or about objects such as application-entities, people, terminals, and distribution lists.
  75.  
  76. 0.2   The Directory plays a significant role in Open Systems Interconnection, whose aim is to allow, with a minimum of 
  77. technical agreement outside of the interconnection standards themselves, the interconnection of information processing 
  78. systems:
  79.  
  80.       -    from different manufacturers;
  81.  
  82.       -    under different managements;
  83.  
  84.       -    of different levels of complexity; and
  85.  
  86.       -    of different ages.
  87.  
  88. 0.3   This Recommendation defines the capabilities provided by the Directory to its users.
  89.  
  90. 0.4   Annex A provides the ASN.1 module which contains all the definitions associated with the abstract service. 
  91.  
  92.  
  93.  
  94. 1     Scope and field of application
  95.  
  96. 1.1   This Recommendation defines in an abstract way the externally visible service provided by the Directory.
  97.  
  98. 1.2   This Recommendation does not specify individual implementation or products.
  99.  
  100.  
  101.  
  102. SECTION 1 - General
  103.  
  104.  
  105. 2     References
  106.  
  107.  
  108. Recommendation X.200 - Open Systems Interconnection - Basic Reference Model.
  109. Recommendation X.208 - Specification of Abstract Syntax Notation One (ASN.1).
  110. Recommendation X.500 - The Directory - Overview of Concepts, Models and Services.
  111. Recommendation X.501 - The Directory - Models.
  112. Recommendation X.518 - The Directory - Procedures for Distributed Operation.
  113. Recommendation X.519 - The Directory - Protocol Specifications.
  114. Recommendation X.520 - The Directory - Selected Attribute Types.
  115. Recommendation X.521 - The Directory - Selected Object Classes.
  116. Recommendation X.509 - The Directory - Authentication Framework.
  117. Recommendation X.219 - Remote Operations - Model, Notation and Service Definition.
  118. Recommendation X.229 - Remote Operations - Protocol Specification.
  119. Recommendation X.407 - Abstract Service Definition Conventions.
  120. 3     Definitions
  121. 3.1   Basic Directory definitions
  122.       This Recommendation makes use of the following terms defined in Recommendation X.500:
  123.       a)   Directory;
  124.       b)   Directory Information Base (DIB);
  125.       c)   (Directory) User.
  126.  
  127.  
  128.  
  129.  
  130.                                                     Fascicle VIII.8 - Rec. X.511     2
  131.  
  132.  
  133. 3.2   Directory model definitions
  134.       This Recommendation makes use of the following terms defined in Recommendation X.501:
  135.       a)   Directory System Agent;
  136.       b)   Directory User Agent.
  137.  
  138. 3.3   Directory information base definitions
  139.       This Recommendation makes use of the following terms defined in Recommendation X.501:
  140.       a)   alias entry;
  141.       b)   Directory Information Tree;
  142.       c)   (Directory) entry;
  143.       d)   immediate superior;
  144.       e)   immediately superior entry/object;
  145.       f)   object;
  146.       g)   object class;
  147.       h)   object entry;
  148.       i)   subordinate;
  149.       j)   superior.
  150.  
  151. 3.4   Directory entry definitions
  152.  
  153.       This Recommendation makes use of the following terms defined in Recommendation X.501:
  154.  
  155.       a)   attribute;
  156.       b)   attribute type;
  157.       c)   attribute value;
  158.       d)   attribute value assertion.
  159.  
  160. 3.5   Name definitions
  161.  
  162.       This Recommendation makes use of the following terms defined in Recommendation X.501:
  163.       a)   alias, alias name;
  164.       b)   distinguished name;
  165.       c)   (directory) name;
  166.       d)   purported name;
  167.       e)   relative distinguished name.
  168.  
  169. 3.6   Distributed operations definitions
  170.  
  171.       This Recommendation makes use of the following terms defined in Recommendation X.518:
  172.       a)   chaining;
  173.       b)   referral.
  174.  
  175. 3.7   Abstract service definitions
  176.       This Recommendation defines the following terms:
  177.       a)   filter: an assertion about the presence or value of certain attributes of an entry in order to limit the scope of 
  178.            a search;
  179.       b)   service controls: parameters conveyed as part of an abstract-operation which constrain various aspects of its 
  180.  
  181.  
  182.  
  183. 3          Fascicle VIII.8 - Rec. X.511
  184.  
  185.  
  186.  
  187.  
  188. performance;
  189.       c)   originator: the user that originated an operation.
  190.  
  191.  
  192. 4     Abbreviations
  193.  
  194.  
  195.       This Recommendation makes use of the following abbreviations:
  196.       AVA       Attribute Value Assertion
  197.       DIB       Directory Information Base
  198.       DIT       Directory Information Tree
  199.       DMD       Directory Management Domain
  200.       DSA       Directory System Agent
  201.       DUA       Directory User Agent
  202.       RDN       Relative Distinguished Name
  203.  
  204.  
  205. 5     Conventions
  206.  
  207.  
  208.       This Recommendation makes use of the abstract service definition conventions defined in Recommendation X.407.
  209.  
  210.  
  211.  
  212. SECTION 2 - Abstract service
  213.  
  214.  
  215. 6     Overview of the directory service
  216.  
  217.  
  218. 6.1   As described in Recommendation X.501 the services of the Directory are provided through access points to DUAs, 
  219. each acting on behalf of a user. These concepts are depicted in Figure 1/X.511.
  220.  
  221.  
  222.                                    FIGURE 1/X.511
  223.                                           
  224.                                Access to the Directory
  225.  
  226. 6.2   In principle, access points to the Directory may be of different types, providing different combinations of services. It 
  227. is valuable to consider the Directory as an object, supporting a number of types of port. Each port defines a particular kind of 
  228. interaction which the Directory can participate in with a DUA. Each access point corresponds to a particular combination of 
  229. port types.
  230.  
  231. 6.3   Using the notation defined in Recommendation X.407 the Directory can be defined as follows:
  232.  
  233.       directory
  234.            OBJECT
  235.                 PORTS {  readPort [S],
  236.                          searchPort [S],
  237.                          modifyPort [S]}
  238.       ::=  id-ot-directory
  239.  
  240.       The Directory supplies operations via: Read Ports, which support reading information from a particular named entry 
  241. in the DIB; Search Ports, which allow more "exploration" of the DIB; and Modify Ports, which enable the modification of 
  242. entries in the DIB.
  243.  
  244.       Note - It is intended that in the future there may be other types of Directory port.
  245.  
  246.  
  247.  
  248.  
  249.                                                     Fascicle VIII.8 - Rec. X.511     4
  250.  
  251.  
  252. 6.4    Similarly, a DUA (from the viewpoint of the Directory) can be defined as follows:
  253.  
  254.       dua
  255.            OBJECT
  256.                 PORTS {  readPort [C],
  257.                          searchPort [C],
  258.                          modifyPort [C]}
  259.       ::=  id-ot-dua
  260.       The DUA consumes the services provided by the Directory.
  261.  
  262. 6.5   The ports cited from  6.2 to 6.4 can be defined as follows:
  263.  
  264.       readPort
  265.            PORT
  266.                 CONSUMER INVOKES {
  267.                      Read, Compare, Abandon}
  268.       ::=  id-pt-search
  269.       searchPort
  270.            PORT
  271.                 CONSUMER INVOKES {
  272.                      List, Search}
  273.       ::=  id-pt-search
  274.       modifyPort
  275.            PORT
  276.            CONSUMER INVOKES {
  277.                 AddEntry, RemoveEntry,
  278.                 ModifyEntry, ModifyRDN}
  279.            ::=  id-pt-modify
  280.  
  281. 6.6   The operations from the readPort, searchPort and the modifyPort are defined in  9, 10, and 11 respectively.
  282.  
  283. 6.7   These ports are used only as a method of structuring the description of the Directory service. Conformance to the 
  284. Directory operations is specified in Recommendation X.519.
  285.  
  286.  
  287. 7     Information types
  288.  
  289.  
  290. 7.1   Introduction
  291.  
  292. 7.1.1 This paragraph identifies, and in some cases defines, a number of information types which are subsequently used in 
  293. the definition of Directory operations. The information types concerned are those which are common to more than one 
  294. operation, are likely to be in the future, or which are sufficiently complex or self-contained as to merit being defined 
  295. separately from the operation which uses them.
  296. 7.1.2 Several of the information types used in the definition of the Directory service are actually defined elsewhere. 
  297. Paragraph 7.2 identifies types and indicates the source of their definition. Each of the remaining  (7.3 to 7.10) identifies 
  298. and defines an information type.
  299. 7.2   Information types defined elsewhere
  300. 7.2.1 The following information types are defined in Recommendation X.501:
  301.       a)   Attribute;
  302.       b)   AttributeType;
  303.       c)   AttributeValue;
  304.       d)   AttributeValueAssertion;
  305.       e)   DistinguishedName;
  306.       f)   Name;
  307.       g)   RelativeDistinguishedName.
  308.  
  309.  
  310.  
  311. 5          Fascicle VIII.8 - Rec. X.511
  312.  
  313.  
  314.  
  315.  
  316. 7.2.2 The following information type is defined in Recommendation X.520:
  317.       a)   PresentationAddress.
  318. 7.2.3 The following information types are defined in Recommendation X.509:
  319.       a)   Certificate;
  320.       b)   SIGNED;
  321.       c)   CertificationPath.
  322. 7.2.4 The following information type is defined in Recommendation X.219:
  323.       a)   InvokeID.
  324. 7.2.5 The following information types are defined in Recommendation X.518:
  325.       a)   OperationProgress;
  326.       b)   ContinuationReference.
  327. 7.3   Common arguments
  328. 7.3.1 The CommonArguments information may be present to qualify the invocation of each operation that the Directory 
  329. can perform.
  330.       CommonArguments ::=SET {
  331.            [30] ServiceControls DEFAULT { },
  332.            [29] SecurityParameters DEFAULT { },
  333.            requestor [28] DistinguishedName
  334.                                    OPTIONAL,
  335.            [27] OperationProgress DEFAULT notStarted,
  336.            aliasedRDNs [26] INTEGER OPTIONAL,
  337.            extensions [25] SET OF EXTENSION OPTIONAL}
  338.       Extension ::=    SET {
  339.            identifier[0] INTEGER,
  340.            critical     [1] BOOLEAN DEFAULT FALSE,
  341.            item         [2] ANY DEFINED BY identifier}
  342. 7.3.2 The various components have the meanings as defined in  7.3.2.1 to 7.3.2.4.
  343.  
  344. 7.3.2.1The ServiceControls component is specified in  7.5. Its absence is deemed equivalent to there being an empty set 
  345. of controls.
  346.  
  347. 7.3.2.2The SecurityParameters component is specified in  7.9. Its absence is deemed equivalent to there being an empty 
  348. set of security parameters.
  349.  
  350. 7.3.2.3The requestor DistinguishedName identifies the originator of a particular abstract- operation. It holds the name of 
  351. the user as identified at the time of binding to the Directory. It may be required when the request is to be signed (see 
  352.  7.10), and shall hold the name of the user who initiated the request.
  353.  
  354. 7.3.2.4The OperationProgress defines the role that the DSA is to play in the distributed evaluation of the request. It is 
  355. more fully defined in Recommendation X.518.
  356. 7.3.2.5The aliasedRDNs component indicates to the DSA that the object component of the operation was created by the 
  357. dereferencing of an alias on an earlier operation attempt. The integer value indicates the number of RDNs in the object that 
  358. came from dereferencing the alias. (The value would have been set in the referral response of the previous operation.)
  359. 7.3.2.6The extensions component provides a mechanism to express standardized extensions to the form of the argument 
  360. of a Directory abstract-operation.
  361.       Note - The form of the result of such an extended abstract-operation is identical to that of the non-extended version. 
  362. (Nonetheless, the result of a particular extended abstract-operation may differ from its non-extended counterpart).
  363.       The subcomponents are as defined in  7.3.2.6.1 to 7.3.2.6.3.
  364. 7.3.2.6.1  The identifier serves to identify a particular extension.  Values of this component shall be assigned only by future 
  365. versions of this series of Recommendations.
  366. 7.3.2.6.2  The critical subcomponent allows the originator of the extended abstract-operation to indicate that the performance 
  367.  
  368.  
  369.  
  370.                                                     Fascicle VIII.8 - Rec. X.511     6
  371.  
  372.  
  373. of only the extended form of the abstract-operation is acceptable (i.e.  that the non-extended form is not acceptable). In this 
  374. case the extension is a critical extension. If the Directory, or some part of it, is unable to perform a critical extension it 
  375. returns an indication of unavailableCriticalExtension (as a ServiceError or PartialOutcomeQualifier).  If the Directory is 
  376. unable to perform an extension which is not critical, it ignores the presence of the extension.
  377. 7.3.2.6.3  The item subcomponent provides the information needed for the Directory to perform the extended form of the 
  378. abstract-operation.
  379. 7.4   Common results
  380. 7.4.1 The CommonResults information should be present to qualify the result of each retrieval operation that the 
  381. Directory can perform.
  382.       CommonResults  ::= SET {
  383.            [30] SecurityParameters   OPTIONAL,
  384.            performer [29] DistinguishedName
  385.                                      OPTIONAL,
  386.            aliasDereferenced [28]BOOLEAN
  387.                            DEFAULT FALSE}
  388. 7.4.2 The various components have the meanings as defined in  7.4.2.1 to 7.4.2.3.
  389. 7.4.2.1The SecurityParameters component is specified in  7.9. Its absence is deemed equivalent to there being an empty 
  390. set of security parameters.
  391. 7.4.2.2The performer DistinguishedName identifies the performer of a particular operation. It may be required when the 
  392. result is to be signed (see  7.10), and shall hold the name of the DSA which signed the result.
  393. 7.4.2.3The aliasDereferenced Component is set to TRUE when the purported name of an object or base object which is 
  394. the target of the operation included on alias which was dereferenced.
  395. 7.5   Service controls
  396. 7.5.1 A ServiceControls parameter contains the controls, if any, that are to direct or constrain the provision of the 
  397. service.
  398.       ServiceControls::= SET {
  399.            options [0] BIT STRING {
  400.                 preferChaining(0)
  401.                 chainingProhibited (1),
  402.                 localScope (2),
  403.                 dontUseCopy (3),
  404.                 dontDereferenceAliases(4)}
  405.                 DEFAULT {},
  406.       priority [1] INTEGER {
  407.            low (0),
  408.            medium (1),
  409.            high (2) } DEFAULT medium,
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431. 7          Fascicle VIII.8 - Rec. X.511
  432.  
  433.  
  434.  
  435.  
  436.       timeLimit [2]  INTEGER OPTIONAL,
  437.       sizeLimit [3]  INTEGER OPTIONAL,
  438.       scopeOfReferral [4] INTEGER {
  439.                                 dmd(0),
  440.                                 country(1)}
  441.                                 OPTIONAL }
  442. 7.5.2 The various components have the meanings as defined in  7.5.2.1 to 7.5.2.5.
  443. 7.5.2.1The options component contains a number of indications, each of which, if set, asserts the condition suggested. 
  444. Thus:
  445.  
  446.       a)   preferChaining indicates that the preference is that chaining, rather than referrals, be used to provide the 
  447.            service. The Directory is not obliged to follow this preference;
  448.       b)   chainingProhibited indicates that chaining, and other methods of distributing the request around the 
  449.            Directory, are prohibited;
  450.       c)   localScope indicates that the operation is to be limited to a local scope. The definition of this option is itself 
  451.            a local matter. For example, within a single DSA or a single DMD;
  452.       d)   dontUseCopy indicates that copied information (as defined in Recommendation X.518) shall not be used to 
  453.            provide the service;
  454.       e)   dontDereferenceAliases indicate that any alias used to identify the entry affected by an operation is not to 
  455.            be dereferenced;
  456.       Note - This is necessary to allow reference to an alias entry itself rather than the aliased entry, e.g. in order to read 
  457. the alias entry.
  458.  
  459.       If this component is omitted, the following are assumed: no preference for chaining but chaining not prohibited, no 
  460. limit on the scope of the operation, use of copy permitted, and aliases will be dereferenced (except for modify operations 
  461. where aliases will never be dereferenced).
  462.  
  463. 7.5.2.2The priority (low, medium or high) at which the service is to be provided. Note that this is not a guaranteed service 
  464. in that Directory, as a whole, does not implement queuing. There is no relationship implied with the use of "priorities" in 
  465. underlying layers.
  466.  
  467. 7.5.2.3The timeLimit indicates the maximum elapsed time, in seconds, within which the service shall be provided. If the 
  468. constraint cannot be met, an error is reported. If this component is omitted, no time limit is implied. In the case of time limit 
  469. exceeded on a List or Search, the result is an arbitrary selection of the accumulated results.
  470.  
  471.       Note - This component does not imply the length of time spent processing the request during the elapsed time: any 
  472. number of DSAs may be involved in processing the request during the elapsed time.
  473.  
  474. 7.5.2.4The sizeLimit is only applicable to List and Search operations. It indicates the maximum number of objects to be 
  475. returned. In the case of size limit exceeded, the results of List and Search may be an arbitrary selection of the accumulated 
  476. results, equal in number to the size limit. Any further results shall be discarded.
  477. 7.5.2.5The scopeOfReferral indicates the scope to which a referral returned by a DSA should be relevant. Depending on 
  478. whether the value dmd or country are selected, only referrals to other DSAs within the selected scope will be returned.
  479.       This applies to the referrals in both a ReferralError and the unexplored parameter of List and Search results.
  480. 7.5.3 Certain combinations of priority, timeLimit, and sizeLimit may result in conflicts.  For example, a short time limit 
  481. could conflict with low priority; a high size limit could conflict with a low time limit, etc.
  482. 7.6   Entry information selection
  483. 7.6.1 An EntryInformationSelection parameter indicates what information is being requested from an entry in a retrieval 
  484. service.
  485.       EntryInformationSelection ::=  SET {
  486.            attributeTypes
  487.                 CHOICE {
  488.                           allAttributes [0] NULL,
  489.                           select [1]] SET OF AttributeType
  490.                           -- empty set implies no attributes
  491.                           -- are requested --}
  492.  
  493.  
  494.  
  495.                                                     Fascicle VIII.8 - Rec. X.511     8
  496.  
  497.  
  498.                 DEFAULT allAttributes NULL,
  499.  
  500.            InfoTypes [2] INTEGER {
  501.                 attributeTypesOnly (0),
  502.                 attributeTypesAndValues (1) }
  503.                 DEFAULT attributeTypesAndValues }
  504.  
  505. 7.6.2 The various components have the meanings as defined in  7.6.2.1 and 7.6.2.2.
  506.  
  507. 7.6.2.1The attributeTypes component specifies the set of attributes about which information is requested:
  508.       a)   if the select option is chosen, then the attributes involved are listed. If the list is empty, then no attributes 
  509.            will be returned. Information about a selected attribute shall be returned if the attribute is present. An 
  510.            AttributeError with the noSuchAttribute problem shall only be returned if none of the attributes selected is 
  511.            present;
  512.       b)   if the allAttributes option is selected, then information is requested about all attributes in the entry.
  513.  
  514.       Attribute information is only returned if access rights are sufficient. A SecurityError (with an 
  515. insufficientAccessRights problem) will only be returned in the case where access rights preclude the reading of all attribute 
  516. values requested.
  517.  
  518. 7.6.2.2The infoTypes component specifies whether both attribute type and attribute value information (the default) or 
  519. attribute type information only is requested. If the attributeTypes component ( 7.6.2.1) is such as to request no attributes, 
  520. then this component is not meaningful.
  521.  
  522. 7.7   Entry information
  523.  
  524. 7.7.1 An EntryInformation parameter conveys selected information from an entry.
  525.       EntryInformation::= SEQUENCE {
  526.            DistinguishedName,
  527.            fromEntry BOOLEAN DEFAULT TRUE,
  528.            SET OF CHOICE {
  529.                 AttributeType,
  530.                 Attribute} OPTIONAL }
  531.  
  532. 7.7.2 The DistinguishedName of the entry is always included.
  533.  
  534. 7.7.3 The fromEntry parameter indicates whether the information was obtained from the entry (TRUE) or a copy of the 
  535. entry (FALSE).
  536. 7.7.4 A set of AttributeTypes or Attributes are included, if relevant, each of which may be alone or accompanied by one 
  537.  
  538. or more attribute values.
  539.  
  540. 7.8   Filter
  541.  
  542. 7.8.1 A Filter parameter applies a test that is either satisfied or not by a particular entry. The filter is expressed in terms 
  543. of assertions about the presence or value of certain attributes of the entry, and is satisfied if and only if it evaluates to TRUE.
  544.       Note - A Filter may be TRUE, FALSE, or undefined.
  545.       Filter::=  CHOICE {
  546.            item         [0]   FilterItem,
  547.            and          [1]   SET OF Filter,
  548.            or           [2]   SET OF Filter,
  549.            not          [3]   Filter }
  550.       FilterItem ::=CHOICE {
  551.            equality     [0]   AttributeValueAssertion,
  552.            substrings   [1]   SEQUENCE {
  553.                 type          AttributeType,
  554.                 strings SEQUENCE OF CHOICE {
  555.                         Initial[0]AttributeValue,
  556.  
  557.  
  558.  
  559. 9          Fascicle VIII.8 - Rec. X.511
  560.  
  561.  
  562.  
  563.  
  564.                         any      [1]AttributeValue,
  565.                         final    [2]AttributeValue}},
  566.            greaterOrEqual[2]   AttributeValueAssertion,
  567.            lessOrEqual        [3]AttributeValueAssertion,
  568.            present         [4]   AttributeType,
  569.            approximateMatch[5]   AttributeValueAssertion }
  570.  
  571. 7.8.2 A Filter is either a FilterItem (see  7.8.3), or an expression involving simpler Filters composed together using the 
  572. logical operators and, or, and not. The Filter is undefined if it is a FilterItem which is undefined, or if it involves one or 
  573. more simpler Filters, all of which are undefined. Otherwise, where the Filter is:
  574.  
  575.       a)   an item, it is TRUE if and only if the corresponding FilterItem is TRUE;
  576.  
  577.       b)   an and, it is TRUE unless any of the nested Filters is FALSE;
  578.  
  579.            Note - Thus, if there are no nested Filters the and evaluates to TRUE.
  580.  
  581.       c)   an or, it is FALSE unless any of the nested Filters is TRUE;
  582.  
  583.                       Note - Thus, if there are no nested Filters the or evaluates to FALSE.
  584.  
  585.       d)   a not, it is TRUE if and only if the nested Filter is FALSE.
  586.  
  587. 7.8.3 A FilterItem is an assertion about the presence or value(s) of an attribute of a particular type in the entry under 
  588. test. Each such assertion is TRUE, FALSE, or undefined.
  589.  
  590. 7.8.3.1Every FilterItem includes an AttributeType which identifies the particular attribute concerned.
  591.  
  592. 7.8.3.2Any assertion about the value of such an attribute is only defined if the AttributeType is known, and the purported 
  593. AttributeValue(s) conforms to the attribute syntax defined for that attribute type.
  594.  
  595.       Note 1 - Where these conditions are not met the FilterItem is undefined.
  596.       Note 2 - Access control restrictions may require that the FilterItem be considered undefined.  
  597. 7.8.3.3Assertions about the value of an attribute are evaluated using the matching rules associated with the attribute syntax 
  598. defined for that attribute type. A matching rule not defined for a particular attribute syntax cannot be used to make assertions 
  599. about that attribute.
  600.  
  601.       Note - Where this condition is not met, the FilterItem is undefined.
  602.  
  603. 7.8.3.4A FilterItem may be undefined (as described in  7.8.3.2 and 7.8.3.3 above). Otherwise, where the FilterItem 
  604. asserts:
  605.  
  606.       a)   equality, it is TRUE if and only if there is a value of the attribute which is equal to that asserted;
  607.  
  608.       b)   substrings, it is TRUE if and only if there is a value of the attribute in which the specified substrings appear 
  609.            in the given order. The substrings shall be non-overlapping, and may (but need not) be separated from the 
  610.            ends of the attribute value and from one another by zero or more string elements.
  611.  
  612.                       If initial is present, the substring shall match the initial substring of the attribute value; if final is present, the 
  613.            substring shall match the final substring of the attribute value; if any is present, the substring may match any 
  614.            substring in the attribute value;
  615.  
  616.       c)   greaterOrEqual, it is TRUE if and only if the relative ordering (as defined by the appropriate ordering 
  617.            algorithm) places the supplied value before or equal to any value of the attribute;
  618.       d)   lessOrEqual, it is TRUE if and only if the relative ordering (as defined by the appropriate ordering algorithm) 
  619.            places the supplied value after or equal to any value of the attribute;
  620.       e)   present, it is TRUE if and only if such an attribute is present in the entry;
  621.       f)   approximateMatch, it is TRUE if and only if there is a value of the attribute which matches that which is 
  622.            asserted by some locally-defined approximate matching algorithm (e.g. spelling variations, phonetic match, 
  623.            etc.). There are no specific guidelines for approximate matching in this version of the Recommendation. If 
  624.  
  625.  
  626.  
  627.  
  628.                                                     Fascicle VIII.8 - Rec. X.511     10
  629.  
  630.  
  631. approximate matching is not supported, this FilterItem should be treated as a match for equality.
  632. 7.9   Security Parameters
  633. 7.9.1 The SecurityParameters govern the operation of various security features associated with a Directory operation.
  634.       Note - These parameters are conveyed from sender to recipient. Where the parameters appear in the argument of 
  635. an abstract-operation the requestor is the sender, and the performer is the recipient. In a result, the roles are reversed.
  636.  
  637.       SecurityParameters::=             SET {
  638.             certification-path           [0]
  639.             CertificationPathOPTIONAL,
  640.             name          [1]   DistinguishedName
  641.                                      OPTIONAL,
  642.             time     [2]  UTCTime OPTIONAL,
  643.             random        [3]   BIT STRING OPTIONAL,
  644.             target        [4]   ProtectionRequest OPTIONAL
  645.                                                     }
  646.  
  647.       ProtectionRequest::=  INTEGER {
  648.                                      none(0),
  649.                                      signed (1)}
  650.  
  651. 7.9.2 The various components have the meanings as defined in  7.9.2.1 to 7.9.2.5.
  652. 7.9.2.1The CertificationPath component consists of the sender's certificate, and, optionally, a sequence of certificate pairs. 
  653. The certificate is used to associate the sender's public key and distinguished name, and may be used to verify the signature 
  654. on the argument or result. This parameter shall be present if the argument or result is signed. The sequence of certification 
  655. pairs consists of certification authority cross certificates. It is used to enable the sender's certificate to be validated. It is not 
  656. required if the recipient shares the same certification authority as the sender. If the recipient requires a valid set of certificate 
  657. pairs, and this parameter is not present, whether the recipient rejects the signature on the argument or result, or attempts to 
  658. generate the certification path, is a local matter.
  659. 7.9.2.2The name is the distinguished name of the first intended recipient of the argument or result. For example, if a DUA 
  660. generates a signed argument, the name is the distinguished name of the DSA to which the operation is submitted.
  661. 7.9.2.3The time is the intended expiry time for the validity of the signature, when signed arguments are used. It is used in 
  662. conjunction with the random number to enable the detection of replay attacks.
  663. 7.9.2.4The random component is a number which should be different for each unexpired token. It is used in conjunction 
  664. with the time parameter to enable the detection of replay attacks when the argument or result has been signed.
  665. 7.9.2.5The target ProtectionRequest may appear only in the request for an operation to be carried out, and indicates the 
  666. requestor's preference regarding the degree of protection to be provided to the result. Two levels are provided: none (no 
  667. protection requested), and signed (the Directory is requested to sign the result, the default). The degree of protection actually 
  668. provided to the result is indicated by the form of result and may be equal to or lower than that requested, based on the 
  669. limitations of the Directory.
  670. 7.10  OPTIONALLY-SIGNED
  671. 7.10.1      An OPTIONALLY-SIGNED information type is one whose values may, at the option of the generator, be 
  672. accompanied by their digital signature. This capability is specified by means of the following macro:
  673.       OPTIONALLY-SIGNED MACRO    ::=
  674.       BEGIN
  675.       TYPE NOTATION       ::=   type (Type)
  676.       VALUE NOTATION      ::=   value (VALUE
  677.               CHOICE   { Type, SIGNED Type})
  678.       END
  679.  
  680. 7.10.2      The SIGNED macro, which describes the form of the signed form of the information, is specified in Recommendation 
  681. X.509.
  682.  
  683.  
  684. 8     Bind and unbind operations
  685.  
  686.  
  687.       The DirectoryBind and DirectoryUnbind operations, defined in  8.1 and  8.2 respectively, are used by the DUA 
  688.  
  689.  
  690.  
  691.  
  692. 11          Fascicle VIII.8 - Rec. X.511
  693.  
  694.  
  695.  
  696.  
  697. at the beginning and end of a particular period of accessing the Directory.
  698.  
  699. 8.1   Directory bind
  700.  
  701. 8.1.1 A DirectoryBind operation is used at the beginning of a period of accessing the Directory.
  702.  
  703.       DirectoryBind     ::=  ABSTRACT-BIND
  704.             TO { readPort, searchPort, modifyPort }
  705.             BIND
  706.             ARGUMENT      DirectoryBindArgument
  707.             RESULT        DirectoryBindResult
  708.             BIND-ERROR    DirectoryBindError
  709.       DirectoryBindArgument::=   SET {
  710.             credentials[0]  Credentials  OPTIONAL,
  711.             versions [1]  Versions DEFAULT
  712.                                         v1988}
  713.       Credentials::=  CHOICE {
  714.             simple        [0]   SimpleCredentials,
  715.             strong        [1]   StrongCredentials,
  716.             externalProcedure [2] EXTERNAL }
  717.       SimpleCredentials::=  SEQUENCE {
  718.             name     [0]  DistinguishedName,
  719.             validity      [1]   SET {
  720.                 time1[0]  UTCTime OPTIONAL,
  721.                 Time2[1]  UTCTime OPTIONAL,
  722.                 random1   [2]   BIT STRING OPTIONAL,
  723.                 random2   [3]   BIT STRING OPTIONAL } OPTIONAL,
  724.                 -- in most instances the argument for
  725.                 -- time and random are relevant in
  726.                 -- dialogues employing protected password
  727.                 -- mechanisms and derive their meaning
  728.                 -- as per bilateral agreements
  729.       password  [2]       OCTET STRING OPTIONAL }
  730.             -- the value could be an unprotected
  731.             -- password or Protected1 or Protected2
  732.             -- as specified in Recommendation X.509.
  733.       StrongCredentials::=  SET {
  734.             certification-path[0]  CertificationPath
  735.                                            OPTIONAL,
  736.             bind-token[1]  Token }  
  737.       Token          ::=  SIGNED SEQUENCE {
  738.             algorithm[0]  AlgorithmIdentifier,
  739.             name     [1]  DistinguishedName,
  740.             time     [2]  UTCTime,
  741.             random        [3]   BIT STRING }
  742.       Versions       ::=  BIT STRING {v1988(0)}
  743.       DirectoryBindResult::=  DirectoryBindArgument
  744.       DirectoryBindError     ::=           SET {
  745.             versions [0]  Versions DEFAULT v1988,
  746.             CHOICE {
  747.                 serviceError[1]   ServiceProblem
  748.                 securityError[2]   SecurityProblem
  749.       }}
  750.  
  751. 8.1.2 The various arguments have the meanings as defined in  8.1.2.1 to 8.1.2.2.
  752. 8.1.2.1The Credentials of the DirectoryBindArgument allow the Directory to establish the identity of the user. They may 
  753. be either simple, strong (as described in Recommendation X.509) or externally defined (externalProcedure).
  754.  
  755.  
  756.  
  757.                                                     Fascicle VIII.8 - Rec. X.511     12
  758.  
  759.  
  760. 8.1.2.1.1SimpleCredentials consist of a name (always the distinguished name of an object) and (optionally) a password. 
  761. This provides a limited degree of security. If the password is protected as described in  5 of Recommendation X.509, then 
  762. SimpleCredentials includes name, password and (optionally) time and/or random numbers which are used to detect replay. 
  763. In some instances a protected password may be checked by an object which knows the password only after locally 
  764. regenerating the protection to its own copy of the password and computing the result with the value in the bind argument 
  765. (password). In other instances a direct compare may be possible.
  766. 8.1.2.1.2StrongCredentials consist of a bind token and, optionally, a certificate and sequence of certification-authority cross- 
  767. certificate (as defined in Recommendation X.509). This enables the Directory to authenticate the identity of the request 
  768. establishing the association, and vice versa.                   The arguments of the bind 
  769. token are used as follows: algorithm is the identifier of the algorithm employed to sign the information; name is the name of 
  770. the intended recipient. The time parameter contains the expiry time of the token. The random number is a number which 
  771. should be different for each unexpired token, and may be used by the recipient to detect replay attacks.
  772. 8.1.2.1.3If externalProcedure is used then the semantics of the authentication scheme being used is outside the scope of 
  773. the Directory document.
  774. 8.1.2.2The Versions argument of the DirectoryBindArgument identifies the versions of the service which the DUA is 
  775. prepared to participate in. For this version of the protocol the value shall be set to v1988(0).
  776. 8.1.2.3Migration to future versions of the Directory should be facilitated by:  
  777.       a)   any elements of DirectoryBindArgument other than those defined in this Recommendation shall be 
  778.            accepted and ignored;
  779.       b)   additional options for named bits of DirectoryBindArgument (e.g. Versions) not defined shall be accepted 
  780.  
  781.            and ignored.
  782.  
  783. 8.1.3 Should the bind request succeed, a result will be returned. The result parameters have the meanings as defined in 
  784.  8.1.3.1 and 8.1.3.2.
  785. 8.1.3.1The Credentials of the DirectoryBindResult allow the user to establish the identity of the DSA. They allow 
  786. information identifying the DSA (that is directly providing the Directory service)  to be conveyed to the DUA. They shall be of 
  787. the same form (i.e. CHOICE) as those supplied by the user.
  788. 8.1.3.2The Versions parameter of the DirectoryBindResult indicates which of the versions of the service requested by the 
  789.  
  790. DUA is actually going to be provided by this DSA.
  791.  
  792. 8.1.4 Should the bind request fail, a bind error will be returned as defined in  8.1.4.1 and       8.1.4.2.
  793. 8.1.4.1The Versions parameter of the DirectoryBindError indicates which versions are supported by this DSA.
  794. 8.1.4.2A securityError or serviceError shall be supplied as follows:
  795.       -    securityErrorinappropriateAuthentication
  796.                                 invalidCredentials
  797.       -    serviceErrorunavailable.
  798.  
  799. 8.2   Directory unbind
  800. 8.2.1 A DirectoryUnbind operation is used at the end of a period of accessing the Directory.
  801.       DirectoryUnbind::= ABSTRACT-UNBIND
  802.            FROM {readPort, searchPort, modifyPort }
  803. 8.2.2 The DirectoryUnbind has no arguments.
  804.  
  805.  
  806. 9     Directory read operations
  807.  
  808.  
  809.       There are two "read-like" operations:  Read and Compare, defined in  9.1 and 9.2, respectively. The Abandon 
  810. operation, defined in  9.3, is grouped with the Read operations for convenience.
  811.  
  812. 9.1   Read
  813. 9.1.1 A Read operation is used to extract information from an explicitly identified entry. It may also be used to verify a 
  814. distinguished name. The arguments of the operation may optionally be signed (see  7.10) by the requestor. If so requested, 
  815.  
  816.  
  817.  
  818. 13          Fascicle VIII.8 - Rec. X.511
  819.  
  820.  
  821.  
  822.  
  823. the Directory may sign the result.
  824.  
  825.       Read  ::= ABSTRACT-OPERATION
  826.             ARGUMENT          ReadArgument
  827.             RESULT   ReadResult
  828.             ERRORS {
  829.                 AttributeError, NameError,
  830.                 ServiceError, Referral, Abandoned,
  831.                 SecurityError }
  832.       ReadArgument ::=OPTIONALLY-SIGNED SET {
  833.             object        [0] Name,
  834.             selection[1]  Selection F13 EntryInformationSelection
  835.                               DEFAULT {}
  836.             COMPONENTS OF CommonArguments }
  837.       ReadResult::=  OPTIONALLY-SIGNED SET {
  838.             entry     [0]  EntryInformation,
  839.             COMPONENTS OF CommonResults }
  840.  
  841. 9.1.2 The various arguments have the meanings as defined in  9.1.2.1 to 9.1.2.3.
  842.  
  843. 9.1.2.1The object argument identifies the object entry from which the information is requested.  Should the Name involve 
  844. one or more aliases, they are dereferenced (unless this is prohibited by the relevant service controls).
  845. 9.1.2.2The selection argument indicates what information from the entry is requested (see  7.6).
  846. 9.1.2.3The CommonArguments (see  7.3) include a specification of the service controls applying to the request. For the 
  847. purposes of this operation the sizeLimit component is not relevant and is ignored if provided.
  848. 9.1.3 Should the request succeed, the result will be returned.  The result parameters have the meanings as defined in 
  849.  9.1.3.1 and  7.4.
  850. 9.1.3.1The entry result parameter holds the requested information (see  7.7).
  851.  
  852. 9.1.4 Should the request fail, one of the listed errors will be reported. If none of the attributes explicitly listed in selection 
  853. can be returned, then an AttributeError with problem noSuchAttribute will be reported. The circumstances under which 
  854. other errors will be reported are defined in  12.
  855. 9.2   Compare
  856. 9.2.1 A Compare operation is used to compare a value (which is supplied as an argument of the request) with the 
  857. value(s) of a particular attribute type in a particular object entry. The arguments of the operation may optionally be signed 
  858. (see  7.10) by the requestor.  If so requested, the Directory may sign the result.
  859.       Compare   ::=     ABSTRACT-OPERATION
  860.             ARGUMENT          CompareArgument
  861.             RESULT      CompareResult
  862.             ERRORS {
  863.                 AttributeError, NameError,
  864.                 ServiceError, Referral, Abandoned,
  865.                 SecurityError }
  866.       CompareArgument::=OPTIONALLY-SIGNED
  867.       SET {
  868.             object      [0]   Name,
  869.             purported[1]AttributeValueAssertion,
  870.             COMPONENTS OF CommonArguments }
  871.       CompareResult     ::=   OPTIONALLY-SIGNED
  872.       SET {
  873.             DistinguishedName OPTIONAL,
  874.             matched     [0]   BOOLEAN,
  875.             from Entry[1]BOOLEAN DEFAULT TRUE,
  876.             COMPONENTS OF CommonResults }
  877.  
  878. 9.2.2 The various arguments have the meanings as defined in  9.2.2.1 to 9.2.2.3.
  879. 9.2.2.1The object argument is the name of the particular object entry concerned. Should the Name involve one or more 
  880. aliases, they are dereferenced (unless prohibited by the relevant service control).
  881.  
  882.  
  883.  
  884.                                                     Fascicle VIII.8 - Rec. X.511     14
  885.  
  886.  
  887. 9.2.2.2The purported argument identifies the attribute type and the value to be compared with that in the entry.
  888. 9.2.2.3The CommonArguments (see  7.3) specify the service controls applying to the request.  For the purposes of this 
  889. operation the sizeLimit component is not relevant and is ignored, if provided.
  890. 9.2.3 Should the request succeed (i.e. the comparison is actually carried out), the result will be returned. The result 
  891. parameters have the meanings as described in  9.2.3.1,  9.2.3.2 and  7.4.
  892. 9.2.3.1The DistinguishedName is present if an alias was dereferenced and represents the distinguished name of the 
  893. object itself.
  894. 9.2.3.2The matched result parameter, holds the result of the comparison. The parameter takes the value TRUE if the 
  895. values were compared and matched, and FALSE if they did not.
  896. 9.2.3.3If fromEntry is TRUE the information was compared against the entry; if FALSE some of the information was 
  897. compared against a copy.
  898. 9.2.4 Should the request fail, one of the listed errors will be reported. The circumstances under which the particular errors 
  899.  
  900. will be reported are defined in  12.
  901.  
  902. 9.3   Abandon
  903.  
  904. 9.3.1 Operations that interrogate the Directory may be abandoned using the Abandon operation if the user is no longer 
  905. interested in the result.
  906.       Abandon     ::=ABSTRACT-OPERATION
  907.             ARGUMENT         AbandonArgument
  908.             RESULT   AbandonResult
  909.             ERRORS {AbandonFailed}
  910.       AbandonArgument  ::=SEQUENCE {
  911.             InvokeID      [0]  InvokeID}
  912.       AbandonResult       ::=  NULL
  913.  
  914. 9.3.2 There is a single argument, the InvokeID which identifies the operation that is to be abandoned. The value of the 
  915. invokeID is the same invokeID which was used to invoke the operation which is to be abandoned.
  916. 9.3.3 Should the request succeed, a result will be returned, although no information will be conveyed with it. The original 
  917.  
  918. operation will fail with an Abandoned error.
  919.  
  920. 9.3.4 Should the request fail, the AbandonFailed error will be reported. This error is described in  12.3.
  921.  
  922. 9.3.5 Abandon is only applicable to interrogation operations, i.e., Read, Compare, List and Search.
  923.  
  924. 9.3.6 A DSA may abandon an operation locally. If the DSA has chained or multicasted the operation to other DSAs, it 
  925. may in turn request them to abandon the operation. A DSA may choose not to abandon the operation and shall then return 
  926. the AbandonFailed error.
  927.  
  928.  
  929. 10    Directory search operations
  930.  
  931.  
  932.       There are two "search-like" operations: List and Search, defined in  10.1 and  10.2 respectively.
  933.  
  934. 10.1  List
  935. 10.1.1      A List operation is used to obtain a list of the immediate subordinates of an explicitly identified entry. Under some 
  936. circumstances, the list returned may be incomplete. The arguments of the operation may optionally be signed (see  7.10) by 
  937. the requestor. If so requested, the Directory may sign the result.
  938.       List  ::=    ABSTRACT-OPERATION
  939.             ARGUMENT            ListArgument
  940.             RESULT     ListResult
  941.  
  942.  
  943.  
  944. 15          Fascicle VIII.8 - Rec. X.511
  945.  
  946.  
  947.  
  948.  
  949.             ERRORS {
  950.                                 NameError
  951.                   ServiceError, Referral, Abandoned,
  952.                   SecurityError }
  953.       List Argument::=OPTIONALLY-SIGNED SET {
  954.             object[0]Name,
  955.             COMPONENTS OF CommonArguments }
  956.       ListResult   ::=OPTIONALLY-SIGNED
  957.       CHOICE {
  958.             listInfo SET {
  959.             DistinguishedName OPTIONAL,
  960.             subordinates [1]    SET OF SEQUENCE {
  961.                 RelativeDistinguishedName,
  962.                 aliasEntry [0]  BOOLEAN DEFAULT FALSE
  963.                 fromEntry  [1]  BOOLEAN DEFAULT TRUE},
  964.             partialOutcomeQualifier [2]
  965.                                        PartialOutcomeQualifier  OPTIONAL
  966.             COMPONENTS OF CommonResults },
  967.             uncorrelatedListInfo    [0] SET OF
  968.                                  ListResult }
  969.       PartialOutcomeQualifier ::=    SET {
  970.             limitProblem     [0]    LimitProblem
  971.                   OPTIONAL,
  972.             unexplored       [1]     SET OF
  973.                   ContinuationReference   OPTIONAL,
  974.             unavailableCriticalExtensions [2] BOOLEAN DEFAULT FALSE }
  975.       LimitProblem ::=  INTEGER {
  976.             timeLimitExceeded (0),
  977.             sizeLimitExceeded (1),
  978.             administrativeLimitExceeded (2) }
  979.  
  980. 10.1.2      The various arguments have the meanings as defined in  10.1.2.1 and  7.3.
  981. 10.1.2.1The object argument identifies the object entry (or possibly the root) whose immediate subordinates are to be listed. 
  982. Should the Name involve one or more aliases, they are dereferenced (unless prohibited by the relevant service control).
  983. 10.1.3      The request succeeds if the object is located regardless of whether there is any subordinate information to return. 
  984. The result parameters have the meanings as defined in  10.1.3.1 to 10.1.3.4 and  7.4.
  985. 10.1.3.1The DistinguishedName is present if an alias was dereferenced. It represents the distinguished name of the object 
  986. itself.
  987. 10.1.3.2The subordinates parameter conveys the information on the immediate subordinate, if any, of the named entry. 
  988. Should any of the subordinate entries be aliases, they will not be dereferenced.
  989. 10.1.3.2.1 The RelativeDistinguishedName is that of the subordinate.
  990.  
  991. 10.1.3.2.2 The fromEntry parameter indicates whether the information was obtained from the entry (TRUE) or a copy of 
  992. the entry (FALSE).
  993. 10.1.3.2.3 The aliasEntry parameter indicates whether the subordinate entry is an alias entry (TRUE) or not (FALSE).
  994. 10.1.3.3The PartialOutcomeQualifier consists of three subcomponents as defined in  10.1.3.3.1 to 10.1.3.3.3. This 
  995. parameter shall be present whenever the result is incomplete.
  996. 10.1.3.3.1 The LimitProblem parameter indicates whether the time limit, the size limit, or an administrative limit has 
  997. been exceeded. The results being returned are those which were available when the limit was reached.
  998. 10.1.3.3.2 The unexplored parameter shall be present if regions of the DIT were not explored. Its information allows 
  999. the DUA to continue the processing of the List operation by contacting other access points if it so chooses. The parameter 
  1000. consists of a set (possibly empty) of ContinuationReferences, each consisting of the name of a base object from which the 
  1001. operation may be progressed, an appropriate value of OperationProgress, and a set of access points from which the 
  1002. request may be further progressed. The ContinuationReferences that are returned shall be within the scope of referral 
  1003. requested in the operation service control.
  1004.  
  1005.  
  1006.  
  1007.                                                     Fascicle VIII.8 - Rec. X.511     16
  1008.  
  1009.  
  1010. 10.1.3.3.3 The unavailableCriticalExtensions parameter indicates, if present, that one or more critical extensions were 
  1011. unavailable in some part of the Directory.
  1012. 10.1.3.4When the DUA has requested a protection request of signed, the uncorrelatedListInfo parameter may comprise a 
  1013. number of sets of result parameters originating from and signed by different components of the Directory. If no DSA in the 
  1014. chain can correlate all the results, the DUA must assemble the actual result from the various pieces.
  1015. 10.1.4      Should the request fail, one of the listed errors will be reported. The circumstances under which the particular errors 
  1016. will be reported are defined in  12.
  1017. 10.2  Search
  1018. 10.2.1      A Search operation is used to search a portion of the DIT for entries of interest and to return selected information 
  1019. from those entries. The arguments of the operation may optionally be signed (see  7.10) by the requestor. If so requested, 
  1020. the Directory may sign the result.
  1021.  
  1022.       Search  ::=ABSTRACT-OPERATION
  1023.             ARGUMENT         SearchArgument
  1024.             RESULT     SearchResult
  1025.             ERRORS {
  1026.                   AttributeError, NameError,
  1027.                   ServiceError, Referral, Abandoned,
  1028.                   SecurityError }
  1029.  
  1030.       SearchArgument  ::=  OPTIONALLY-SIGNED
  1031.       SET {
  1032.             baseObject       [0]  Name,
  1033.             subset           [1]  INTEGER {
  1034.                   baseObject (0),
  1035.                   oneLevel(1),
  1036.                   wholeSubtree(2)}  DEFAULT baseObject,
  1037.             filter     [2]  Filter DEFAULT and {}.
  1038.             searchAliases    [3]  BOOLEAN DEFAULT TRUE,
  1039.             selection[4]  EntryInformationSelection DEFAULT {}
  1040.                  COMPONENTS OF CommonArguments }
  1041.  
  1042.       SearchResult    ::=OPTIONALLY-SIGNED
  1043.             CHOICE {
  1044.             searchInfo SET {
  1045.             DistinguishedName OPTIONAL,
  1046.             entries  [0]     SET OF EntryInformation,
  1047.             partialOutcomeQualifier
  1048.                 [2]PartialOutcomeQualifier OPTIONAL,
  1049.       COMPONENTS OF CommonResults },
  1050.       uncorrelatedSearchInfo [0] SET OF
  1051.             SearchResult }
  1052.  
  1053. 10.2.2      The various arguments have the meanings as defined in  10.2.2.1 to 10.2.2.3,  10.2.2.5, and  7.3.
  1054. 10.2.2.1The baseObject argument identifies the object entry (or possibly the root) relative to which the search is to take 
  1055. place.
  1056.  
  1057. 10.2.2.2The subset argument indicates whether the search is to be applied to:
  1058.  
  1059.       a)   the baseObject only;
  1060.  
  1061.       b)   the immediate subordinates of the base object only (oneLevel);
  1062.  
  1063.       c)   the base object and all its subordinates (wholeSubtree).
  1064.  
  1065. 10.2.2.3The filter argument is used to eliminate entries from the search space which are not of interest. Information will only 
  1066.  
  1067.  
  1068.  
  1069.  
  1070. 17          Fascicle VIII.8 - Rec. X.511
  1071.  
  1072.  
  1073.  
  1074.  
  1075. be returned on entries which satisfy the filter (see  7.8).
  1076.  
  1077. 10.2.2.4Aliases shall be dereferenced while locating the base object, subject to the setting of the 
  1078. dontDereferenceAliasesServiceControl. Aliases among the subordinates of the base object    shall be dereferenced during 
  1079. the search, subject to the setting of the searchAliases parameter. If the searchAliases parameter is TRUE, aliases shall be 
  1080. dereferenced, if the parameter is FALSE, aliases shall not be dereferenced. If the searchAliases parameter is TRUE, the 
  1081. search shall continue in the subtree of the aliased object.
  1082. 10.2.2.5The selection argument indicates what information from the entries is requested (see  7.6).
  1083.  
  1084. 10.2.3      The request succeeds if the base object is located, regardless of whether there are any subordinates to return.
  1085.       Note - As a corollary to this, the outcome of an (unfiltered) Search applied to a single entry may not be identical to 
  1086. a Read which seeks to interrogate the same set of attributes of the entry. This is because the latter will return an 
  1087. AttributeError if none of the selected attributes exist in the entry.
  1088.       The result parameters have the meanings as defined in  10.2.3.1 to 10.2.3.4 and  7.3.
  1089. 10.2.3.1The DistinguishedName is present if an alias was dereferenced, and represents the distinguished name of the base 
  1090. object.
  1091. 10.2.3.2The entries parameter conveys the requested information from each entry (zero or more)  which satisfied the filter 
  1092. (see  7.5).
  1093. 10.2.3.3The PartialOutcomeQualifier consists of two subcomponents as described for the List operation in  10.1.3.4.
  1094. 10.2.3.4The uncorrelatedSearchInfo parameter is as described for uncorrelatedListInfo in  10.1.3.4.
  1095. 10.2.4      Should the request fail, one of the listed errors will be reported. The circumstances under which the particular errors 
  1096. will be reported are defined in  12.
  1097. 11    Directory modify operations
  1098.  
  1099.  
  1100.       There are four operations to modify the Directory: AddEntry, RemoveEntry, ModifyEntry and ModifyRDN defined 
  1101. in  11.1 to 11.4 respectively.
  1102.       Note 1 - Each of these abstract-operations identifies the target entry by means of its distinguished name.
  1103.       Note 2 - The success of AddEntry, RemoveEntry, and ModifyRDN operations will be dependent on the physical 
  1104. distribution of the DIB across the Directory. Failure will be reported with an UpdateError and problem affectsMultipleDSAs. 
  1105. See Recommendation X.518.
  1106. 11.1  Add entry
  1107. 11.1.1      An AddEntry operation is used to add a leaf entry (either an object entry, or an alias entry)  to the DIT. The 
  1108.  
  1109. arguments of the operation may optionally be signed (see  7.10) by the requestor.
  1110.  
  1111.       AddEntry    ::= ABSTRACT-OPERATION
  1112.             ARGUMENT            AddEntryArgument
  1113.             RESULT   AddEntryResult
  1114.             ERRORS {
  1115.                   AttributeError, NameError,
  1116.                   ServiceError, Referral, SecurityError,
  1117.                   UpdateError }
  1118.       AddEntryArgument::=  OPTIONALLY-SIGNED
  1119.       SET {
  1120.             object   [0]  DistinguishedName,
  1121.             entry     [1]  SET OF Attribute,
  1122.             COMPONENTS OF CommonArguments }
  1123.       AddEntryResult ::=NULL
  1124.  
  1125. 11.1.2      The various arguments have the meanings as defined in  11.1.2.1 to 11.1.2.3.
  1126. 11.1.2.1The object argument identifies the entry to be added. Its immediate superior, which must already exist for the 
  1127. operation to succeed, can be determined by removing the last RDN component (which belongs to the entry to be created).
  1128. 11.1.2.2The entry argument contains the attribute information which, together with that from the RDN, constitutes the entry 
  1129. to be created. The Directory shall ensure that the entry conforms to the Directory schema. Where the entry being created is 
  1130.  
  1131.  
  1132.  
  1133.                                                     Fascicle VIII.8 - Rec. X.511     18
  1134.  
  1135.  
  1136. an alias, no check is made to ensure that the aliasedObjectName attribute points to a valid entry.
  1137. 11.1.2.3The CommonArguments (see  7.3) include a specification of the service controls applying to the request. For the 
  1138. purposes of this operation the dontDereferenceAlias option and the sizeLimit component are not relevant and are ignored if 
  1139. provided. Aliases are never dereferenced by this operation.
  1140. 11.1.3      Should the request succeed, a result will be returned, although no information will be conveyed with it.
  1141. 11.1.4      Should the request fail, one of the listed errors will be reported.  The circumstances under which the particular errors 
  1142.  
  1143. will be reported are defined in  12.
  1144.  
  1145. 11.2  Remove Entry
  1146. 11.2.1      A RemoveEntry operation is used to remove a leaf entry (either an object entry or an alias entry) from the DIT. The 
  1147. arguments of the operation may optionally be signed (see  7.10) by the requestor.
  1148.  
  1149.       RemoveEntry ::=ABSTRACT-OPERATION
  1150.             ARGUMENT      RemoveEntryArgument
  1151.             RESULT        RemoveEntryResult
  1152.             ERRORS {
  1153.                 NameError,
  1154.                 ServiceError, Referral, SecurityError,
  1155.                 UpdateError}
  1156.       RemoveEntryArgument ::= OPTIONALLY-SIGNED SET {
  1157.              object        [0]      DistinguishedName,
  1158.              COMPONENTS OF CommonArguments }
  1159.  
  1160.       RemoveEntryResult     ::=  NULL
  1161.  
  1162. 11.2.2     The various arguments have the meanings as defined in  11.2.2.1 and 11.2.2.2.
  1163. 11.2.2.1The object argument identifies the entry to be deleted.  Aliases in the name will not be dereferenced.
  1164. 11.2.2.2The CommonArguments (see  7.3) include a specification of the service controls applying to the request. For the 
  1165. purposes of this operation the dontDereferenceAlias option and the sizeLimit component are not relevant and are ignored if 
  1166. provided. Aliases are never dereferenced by this operation.
  1167. 11.2.3      Should the request succeed, a result will be returned, although no information will be conveyed with it.
  1168. 11.2.4      Should the request fail, one of the listed errors will be reported.  The circumstances under which the particular errors 
  1169.  
  1170. will be reported are defined in  12.
  1171.  
  1172. 11.3  Modify Entry
  1173.  
  1174. 11.3.1      The ModifyEntry operation is used to perform a series of one or more of the following modifications to a single 
  1175. entry:
  1176.       a)   add a new attribute;
  1177.       b)   remove an attribute;
  1178.       c)   add attribute values;
  1179.       d)   remove attribute values;
  1180.       e)   replace attribute values;
  1181.       f)   modify an alias.
  1182.       The arguments of the operation may optionally be signed (see  7.10) by the requestor.
  1183.       ModifyEntry ::=ABSTRACT-OPERATION
  1184.             ARGUMENT      ModifyEntryArgument
  1185.             RESULT   ModifyEntryResult
  1186.             ERRORS {
  1187.                   AttributeError, NameError,
  1188.                   ServiceError, Referral, SecurityError,
  1189.                   UpdateError }
  1190.       ModifyEntryArgument ::=       OPTIONALLY-SIGNED SET {
  1191.  
  1192.  
  1193.  
  1194. 19          Fascicle VIII.8 - Rec. X.511
  1195.  
  1196.  
  1197.  
  1198.  
  1199.             object   [0]  DistinguishedName,
  1200.             changes   [1]  SEQUENCE OF EntryModification,
  1201.             COMPONENTS OF CommonArguments }
  1202.       ModifyEntryResult   ::=NULL
  1203.       EntryModification    ::=CHOICE {
  1204.             addAttribute  [0]      Attribute,
  1205.             removeAttribute      [1]  AttributeType,
  1206.             addValues           [2]  Attribute,
  1207.             removeValues   [3]     Attribute }
  1208. 11.3.2      The various arguments have the meanings as defined in  11.3.2.1 and 11.3.2.2.
  1209. 11.3.2.1The object argument identifies the entry to which the modifications should be applied.  Any aliases in the name will 
  1210. not be dereferenced.
  1211. 11.3.2.2The changes argument defines a sequence of modifications, which are applied in the order specified. If any of the 
  1212. individual modifications fails, then an AttributeError is generated and the entry left in the state it was prior to the operation. 
  1213. That is, the operation is atomic. The end result of the sequence of modifications shall not violate the Directory schema. 
  1214. However, it is possible, and sometimes necessary, for the individual EntryModification changes to appear to do so.  The 
  1215. following types of modification may occur:
  1216.       a)   addAttribute: This identifies a new attribute to be added to the entry, which is fully specified by the 
  1217.            argument. Any attempt to add an already existing attribute results in an AttributeError;
  1218.       b)   removeAttribute: The argument identifies (by its type) an attribute to be removed from the entry. Any 
  1219.            attempt to remove a non-existing attribute results in an AttributeError;
  1220.            Note - This operation is not allowed if the attribute type is present in the RDN.
  1221.       c)   addValues: This identifies an attribute by the attribute type in the argument, and specifies one or more 
  1222.            attribute values to be added to the attribute.  An attempt to add an already existing value results in an error. 
  1223.            An attempt to add a value to a non-existent type results in an error;
  1224.       d)   removeValues: This identifies an attribute by the attribute type in the argument and specifies one or more 
  1225. attribute values to be removed from the attribute.  If the values are not present in the attribute, this results in 
  1226. an AttributeError. If an attempt is made to modify the object class attribute, an update error is returned.
  1227.            Note - This operation is now allowed if one of the values is present in the RDN.
  1228.       Values may be replaced by a combination of addValues and removeValues in a single ModifyEntry operation.
  1229. 11.3.2.3The CommonArguments (see  7.3) include a specification of the service controls applying to the request. For the 
  1230. purposes of this operation the dontDereferenceAlias option and the sizeLimit component are not relevant and are ignored if 
  1231. provided. Aliases are never dereferenced by this operation.
  1232. 11.3.3      Should the request succeed, a result will be returned although no information will be conveyed with it.
  1233. 11.3.4      Should the request fail, one of the listed errors will be reported. The circumstances under which the particular errors 
  1234. will be reported are defined in  12.
  1235. 11.4  Modify RDN
  1236. 11.4.1      The ModifyRDN operation is used to change the Relative Distinguished Name of a leaf entry (either an object entry 
  1237. or an alias entry) in the DIT. The arguments of the operation may optionally be signed (see  7.10) by the requestor.
  1238.       ModifyRDN ::=   ABSTRACT-OPERATION
  1239.             ARGUMENT      ModifyRDNArgument
  1240.             RESULT   ModifyRDNResult
  1241.             ERRORS {
  1242.                 NameError,
  1243.                 ServiceError, Referral, SecurityError,
  1244.                 UpdateError }
  1245.       ModifyRDNArgument   ::=OPTIONALLY-SIGNED SET {
  1246.             object   [0]  DistinguishedName,
  1247.             newRDN        [1]   RelativeDistinguishedName,
  1248.             deleteOldRDN  [2]   BOOLEAN DEFAULT FALSE,
  1249.             COMPONENTS OF CommonArguments }
  1250.       ModifyRDNResult::=  NULL
  1251. 11.4.2      The various parameters have the meanings as defined in  11.4.2.1 to 11.4.2.5.
  1252.  
  1253.  
  1254.  
  1255.                                                     Fascicle VIII.8 - Rec. X.511     20
  1256.  
  1257.  
  1258. 11.4.2.1The object argument identifies the entry whose Relative Distinguished Name is to be modified. Aliases in the name 
  1259. will not be dereferenced. The immediate superior entry shall not have any Non-Specific Subordinate References (see 
  1260. Recommendation X.518).
  1261. 11.4.2.2The newRDN argument specifies the new RDN of the entry.
  1262. 11.4.2.3If an attribute value in the new RDN does not already exist in the entry (either as part of the old RDN or as a non- 
  1263. distinguished value) it is added. If it cannot be added, an error is returned.
  1264. 11.4.2.4If the deleteOldRDN flag is set, all attribute values in the old RDN which are not in the new RDN are deleted. If 
  1265. this flag is not set, the old values should remain in the entry (not as a part of the RDN). The flag shall be set where a single 
  1266. value attribute in the RDN has its value  changed by the operation. If this operation removes the last attribute value of an 
  1267. attribute, that attribute shall be deleted.
  1268. 11.4.2.5The Common Arguments (see  7.3) include a specification of the service controls applying to the request. For the 
  1269. purposes of this operation the dontDereferenceAlias option and the sizeLimit component are not relevant and are ignored if 
  1270. provided. Aliases are never dereferenced by this operation.
  1271. 11.4.3      Should the request succeed, a result will be returned, although no information will be conveyed with it.
  1272. 11.4.4      Should the request fail, one of the listed errors will be reported. The circumstances under which the particular errors 
  1273. will be returned are defined in  12.
  1274. 11.4.5      As defined in this Recommendation this operation may only be used on a leaf entry.
  1275.  
  1276.  
  1277.  
  1278. 12    Errors
  1279.  
  1280. 12.1  Error Precedence
  1281.  
  1282. 12.1.1      The Directory does not continue to perform an operation beyond the point at which it determines that an error is to 
  1283. be reported.
  1284.       Note 1 - An implication of this rule is that the first error encountered can differ for repeated instances of the same 
  1285. query, as there is not a specific logical order in which to process a given query. For example, DSAs may be searched in 
  1286. different orders.
  1287.       Note 2 - The rules of error precedence specified here apply only to the abstract service provided by the Directory as 
  1288. a whole.  Different rules apply when the internal structure of the Directory is taken into account.
  1289. 12.1.2      Should the Directory simultaneously detect more than one error, the following list determines which error is reported. 
  1290. An error higher in the list has a higher logical precedence than one below it and is the error which is reported.
  1291.       a)   NameError
  1292.       b)   UpdateError
  1293.       c)   AttributeError
  1294.       d)   SecurityError
  1295.       e)   ServiceError.
  1296.  
  1297. 12.1.3      The following errors do not present any precedence conflicts:
  1298.       a)   AbandonFailed, because it is specific to one operation, Abandon, which can encounter no other error;
  1299.       b)   Abandoned, which is not reported if an Abandon operation is received simultaneously with the detection of 
  1300.            an error. In this case an AbandonFailed error, reporting the problem tooLate is reported along with the 
  1301.            report of the actual error encountered;
  1302.       c)   Referral, which is not a "real" error, only an indication that the Directory has detected that the DUA must 
  1303.            present its request to another access point.
  1304.  
  1305. 12.2  Abandoned
  1306.  
  1307. 12.2.1      This outcome may be reported for any outstanding directory enquiry operation (i.e. Read, Search, Compare, List) if 
  1308. the DUA invokes an Abandon operation with the appropriate InvokeID.
  1309.  
  1310.       Abandoned ::=  ABSTRACT-ERROR  -- not literally an "error"
  1311.  
  1312. 12.2.2      There are no parameters associated with this error.
  1313.  
  1314.  
  1315.  
  1316. 21          Fascicle VIII.8 - Rec. X.511
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322. 12.3  Abandon Failed
  1323.  
  1324. 12.3.1      The AbandonFailed error reports a problem encountered during an attempt to abandon an operation.
  1325.       AbandonFailed  ::=ABSTRACT-ERROR
  1326.            PARAMETER SET {
  1327.                  problem   [0] AbandonProblem,
  1328.                  operation  [1] InvokeID}
  1329.       AbandonProblem ::=INTEGER
  1330.                          noSuchOperation (1),
  1331.                          tooLate (2),
  1332.                          cannotAbandon (3) }
  1333. 12.3.2      The various parameters have the meanings as defined in  12.3.2.1 and 12.3.2.2.
  1334. 12.3.2.1The particular problem encountered is specified. Any of the following problems may be indicated:
  1335.       a)   noSuchOperation, when the Directory has no knowledge of the operation which is to be abandoned (this 
  1336.            could be because no such invoke took place or because the Directory has forgotten about it);
  1337.       b)   tooLate, when the Directory has already responded to the operation;
  1338.       c)   cannotAbandon, when an attempt has been made to abandon an operation for which this is prohibited (e.g. 
  1339.            modify), or the abandon could not be performed.
  1340. 12.3.2.2The identification of the particular operation (invocation) to be abandoned.
  1341.  
  1342. 12.4  Attribute Error
  1343.  
  1344. 12.4.1      An AttributeError reports an attribute-related problem.
  1345.  
  1346.       AttributeError ::= ABSTRACT-ERROR
  1347.             PARAMETER SET {
  1348.                   object   [0]  Name,
  1349.                   problems [1]  SET OF SEQUENCE {
  1350.                      problem    [0]  AttributeProblem,
  1351.                      type       [1]  AttributeType,
  1352.                      value      [2]  AttributeValue
  1353.                                              OPTIONAL }}
  1354.       AttributeProblem  ::=  INTEGER {
  1355.            noSuchAttributeOrValue (1),
  1356.            InvalidAttributeSyntax (2),
  1357.            undefinedAttributeType (3),
  1358.            InappropriateMatching (4),
  1359.            constraintViolation (5)
  1360.            attributeOrValueAlreadyExists (6) }
  1361. 12.4.2      The various parameters have the meanings as described in  12.4.2.1 and 12.4.2.2.
  1362. 12.4.2.1The object parameter identifies the entry to which the operation was being applied when the error occurred.
  1363. 12.4.2.2One or more problems may be specified. Each problem identified below is accompanied by an indication of the 
  1364. attribute type, and if necessary to avoid ambiguity, the value, which caused the problem:
  1365.       a)   noSuchAttributeOrValue: The named entry lacks one of the attributes or attribute values specified as an 
  1366.            argument of the operation;
  1367.       b)   invalidAttributeSyntax: A purported attribute value, specified as an argument of the operation, does not 
  1368.            conform to the attribute syntax of the attribute type;
  1369.       c)   undefinedAttributeType: An undefined attribute type was provided as an argument to the operation. This 
  1370.            error may occur only in relation to Add, Remove, Modify or ModifyRDN operations;
  1371.       d)   inappropriateMatching: An attempt was made, e.g. in a filter, to use a matching rule not defined for the 
  1372.            attribute type concerned;
  1373.       e)   constraintViolation: An attribute or attribute value supplied in the argument of abstract- operation does not 
  1374.            conform to the constraints imposed by Recommendation X.501 or by the attribute definition (e.g. the value 
  1375.  
  1376.  
  1377.  
  1378.                                                     Fascicle VIII.8 - Rec. X.511     22
  1379.  
  1380.  
  1381. exceeds the maximum size allowed);
  1382.       f)   attributeOrValueAlreadyExists: An attempt was made to add an attribute which already existed in the entry, 
  1383.            or a value which already existed in the attribute.
  1384. 12.5  Name Error
  1385. 12.5.1      A NameError reports a problem related to the name provided as an argument to an operation.
  1386.       NameError  ::= ABSTRACT-ERROR
  1387.            PARAMETER SET {
  1388.                 problem [0]  NameProblem,
  1389.                 matched [1]  Name}
  1390.       NameProblem  ::=  INTEGER {
  1391.            noSuchObject (1),
  1392.            aliasProblem (2),
  1393.            invalidAttributeSyntax (3),
  1394.            aliasDereferencingProblem (4) }
  1395. 12.5.2      The various parameters have the meanings as described in  12.5.2.1 and 12.5.2.2.
  1396. 12.5.2.1The particular problem encountered. Any of the following problems may be indicated:
  1397.       a)   noSuchObject: The name supplied does not match the name of any object;
  1398.       b)   aliasProblem: An alias has been dereferenced which names no object;
  1399.       c)   invalidAttributeSyntax: An attribute type and its accompanying attribute value in AVA in the name are 
  1400.            incompatible;
  1401.       d)   aliasDereferencingProblem: An alias was encountered in a situation where it was not allowed.
  1402. 12.5.2.2The matched parameter contains the name of the lowest entry (object or alias) in the DIT that was matched and is 
  1403. a truncated form of the name provided or, if an alias has been dereferenced, of the resulting name.
  1404.       Note - If there is a problem with the attribute types and/or values in the name offered in a directory operation 
  1405. argument, this is reported via a NameError (with problem invalidAttributeSyntax) rather than as an AttributeError or an 
  1406. UpdateError.
  1407. 12.6  Referral
  1408. 12.6.1      A Referral redirects the service-user to one or more access points better equipped to carry out the requested 
  1409. operation.
  1410.       Referral ::= ABSTRACT-ERROR  -- not literally an "error"
  1411.            PARAMETER SET {
  1412.             candidate[0]  ContinuationReference }
  1413. 12.6.2      The error has a single parameter which contains a ContinuationReference which can be used to progress the 
  1414.  
  1415. operation (see Recommendation X.518).
  1416.  
  1417. 12.7  Security Error
  1418.  
  1419. 12.7.1      A SecurityError reports a problem in carrying out an operation for security reasons.
  1420.       SecurityError ::=ABSTRACT-ERROR
  1421.            PARAMETER SET {
  1422.             problem  [0]   SecurityProblem }
  1423.       SecurityProblem   ::=  INTEGER {
  1424.            InappropriateAuthentication (1),
  1425.            InvalidCredentials (2),
  1426.            InsufficientAccessRights (3),
  1427.            InvalidSignature (4),
  1428.            protectionRequired (5),
  1429.            noInformation (6) }
  1430. 12.7.2      The error has a single parameter, which reports the particular problem encountered. The following problems may be 
  1431. indicated:
  1432.  
  1433.  
  1434.  
  1435. 23          Fascicle VIII.8 - Rec. X.511
  1436.  
  1437.  
  1438.  
  1439.  
  1440.       a)   inappropriateAuthentication: The level of security associated with the requestor's credentials is inconsistent 
  1441.            with the level of protection requested, e.g. simple credentials were supplied while strong credentials were 
  1442.            required;
  1443.       b)   invalidCredentials: The supplied credentials were invalid;
  1444.  
  1445.       c)   insufficientAccessRights: The requestor does not have the right to carry out the requested operation;
  1446.  
  1447.       d)   invalidSignature: The signature of the request was found to be invalid;
  1448.  
  1449.       e)   protectionRequired: The Directory was unwilling to carry out the requested operation because the argument 
  1450.  
  1451.            was not signed;
  1452.  
  1453.       f)   noInformation: The requested operation produced a security error for which no information is available.
  1454.  
  1455. 12.8  Service Error
  1456.  
  1457. 12.8.1      A ServiceError reports a problem related to the provision of the service.
  1458.  
  1459.       ServiceError  ::=   ABSTRACT-ERROR
  1460.             PARAMETER SET {
  1461.                   problem  [0]  ServiceProblem },
  1462.       ServiceProblem  ::=  INTEGER {
  1463.                   busy (1),
  1464.                   unavailable (2),
  1465.                   unwillingToPerform (3),
  1466.                   chainingRequired (4),
  1467.                   unableToProceed (5),
  1468.                   invalidReference (6),
  1469.                   timeLimitExceeded (7),
  1470.                   administrativeLimitExceeded (8),
  1471.                   loopDetected (9),
  1472.                   unavailableCriticalExtension (10),
  1473.                   outOfScope (11),
  1474.                   ditError (12) }
  1475.  
  1476. 12.8.2      The error has a single parameter, which reports the particular problem encountered. The following problems may be 
  1477.  
  1478. indicated:
  1479.  
  1480.       a)   busy: The Directory, or some part of it, is presently too busy to perform the requested operation, but may be 
  1481.  
  1482.            able to do so after a short while;
  1483.  
  1484.       b)   unavailable: The Directory, or some part of it, is currently unavailable;
  1485.  
  1486.       c)   unwillingToPerform: The Directory, or some part of it, is not prepared to execute this request, e.g. because 
  1487.            it would lead to excessive consumption of resources or violate the policy of an Administrative Authority 
  1488.            involved;
  1489.       d)   chainingRequired: The Directory is unable to accomplish the request other than by chaining, however 
  1490.            chaining was prohibited by means of the chainingProhibited service control option;
  1491.       e)   unableToProceed: The DSA returning this error did not have administrative authority for the appropriate 
  1492.            naming context and as a consequence was not able to participate in name resolution;
  1493.       f)   invalidReference: The DSA was unable to perform the request as directed by the DUA (in 
  1494.            OperationProgress). This may have arisen due to using an invalid referral;
  1495.  
  1496.       g)   timeLimitExceeded: The Directory has reached the limit of time set by the user in a service control. No 
  1497.  
  1498.            partial results are available to return to the user;
  1499.  
  1500.       h)   administrativeLimitExceeded: The Directory has reached some limit set by an administrative authority, and 
  1501.  
  1502.  
  1503.  
  1504.  
  1505.                                                     Fascicle VIII.8 - Rec. X.511     24
  1506.  
  1507.  
  1508. no partial results are available to return to the user;
  1509.  
  1510.       i)   loopDetected: The Directory is unable to accomplish the request due to an internal loop;
  1511.  
  1512.       j)   unavailableCriticalExtension: The Directory was unable to execute the request because one or more critical 
  1513.            extensions were not available;
  1514.  
  1515. )  Recommendation X.511 and ISO 9594-3, Information Processing Systems - Open Systems 
  1516. Interconnection - The Directory - Abstract Service Definition, were developed in close 
  1517. collaboration and are technically aligned.
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574. 25          Fascicle VIII.8 - Rec. X.511
  1575.  
  1576.  
  1577.  
  1578.